package com.yiper.util;

import org.apache.commons.codec.digest.DigestUtils;

/**
 *
 * @author yhq
 * @date 2018/8/21 1:09
 *
 * 两次加密
 * 1，在前端：明文密码+固定盐在装成md5
 * 2，服务端：获取到传输过来的MD5，在加随机生成的盐，salt,再转成md5，存入数据库（数据库有password和salt字段），存密码的两次MD5生成的值和随机盐
 *
 *
 */
public class MD5Utils {

    private static final String salt = "1a2b3c4d"; //这个自定义

    public static String md5(String sac) {
        //commons-lang3  version:3.6
        String md5 = DigestUtils.md5Hex(sac);
        System.out.println(md5);
        return md5;
    }

    /**
     * 第一次明文加固定salt加密
     *
     * @param inputPass
     * @return
     */
    public static String inputPassToFormPass(String inputPass) {
        String str = "" + salt.charAt(0) + salt.charAt(2) + inputPass + salt.charAt(5) + salt.charAt(4);
        System.out.println(str);
        return md5(str);

    }

    /**
     * 第二次加密md5的值+随机盐再进行md5加密
     *
     * @param formPass
     * @param
     * @return
     */
    public static String formPassToDBPass(String formPass) {
        String str = "" + salt.charAt(0) + salt.charAt(2) + formPass + salt.charAt(5) + salt.charAt(4);
        System.out.println(str);
        return md5(str);
    }

    /**
     * 整体加密
     */
    public static String inputPassToDbPass(String pass, String salt) {
        //第一次加密
        String onePass = inputPassToFormPass(pass);
        //第二次加密
        return formPassToDBPass(onePass);

    }
}
